home *** CD-ROM | disk | FTP | other *** search
- %Contents:Bordered table macro as introduced at EuroTeX '92 with some mods.
- %Version: December 1993.
- %Purpose: Typeset bordered tables, abstracting from separators,
- % and separation data proper from first row and column.
- %Example of use
- %\def\capbtbl{AT\&T Common Stock}
- %\def\header{Year\cs Price\cs Dividend}
- %\def\footer{* (first quarter only}
- %\def\data{1971\cs 41--54\cs\llap{\$}2.60\rs
- % 2\cs 41--54\cs 2.70}%et cetera
- %$$\flr\btable\data\qquad\framed\ruled\btable\data$$
- %Documentation: Proceedings EuroTeX '92, Prague, and MAPS 92.2.
- %Macro:
- %C.G. van der Laan, Hunzeweg 57, 9893PB, Garnwerd. Holland. 05941-1525.
- %btable.tex version 1, 17/7/92 author: cgl@risc1.rug.nl
- \newbox\tbl\let\ea=\expandafter
- %Cell vertical size, row height and depth (separation implicit),
- \newdimen\cvsize\newdimen\tsht\newdimen\tsdp\newdimen\tvsize\newdimen\thsize
- %Parameter setting macros: Rules
- \def\hruled{\def\lineglue{\hrulefill}\def\colsep{} \def\rowsep{\hrule}
- \let\rowstbsep=\colsep\let\headersep=\rowsep}
- \def\vruled{\def\lineglue{\hfil} \def\colsep{\vrule}\def\rowsep{}
- \let\rowstbsep=\colsep\let\headersep=\hrule}
- \def\ruled {\def\lineglue{\hrulefill}\def\colsep{\vrule}\def\rowsep{\hrule}
- \let\rowstbsep=\colsep\let\headersep=\rowsep}
- \def\nonruled{\def\lineglue{\hfil} \def\colsep{} \def\rowsep{}
- \def\rowstbsep{\vrule}\def\headersep{\hrule}}
- \def\dotruled{\def\lineglue{\dotfill}\def\rowsep{\hbox to\thsize{\dotfill}}
- \def\colsep{\lower1.5\tsdp\vbox to\cvsize{%
- \leaders\hbox to0pt{\vrule height2pt depth2pt width0pt\hss.\hss}\vfil}}
- \let\rowstbsep=\colsep\let\headersep=\rowsep}
- %Parameter setting macros: Controling positioning
- \def\ctr{\def\lft{\hfil}\def\rgt{\hfil}}%Centered
- \def\fll{\def\lft{} \def\rgt{\hfil}}%Flushed left
- \def\flr{\def\lft{\hfil}\def\rgt{}} %Flushed right
- %Parameter setting macros: Framing
- \def\framed{\let\frameit=\boxit}
- \def\nonframed{\def\frameit##1{##1}}
- \def\dotframed{\let\frameit=\dotboxit}
- %
- \def\btable#1{\vbox{\let\rsl=\rowstblst%Copy
- \ifx\empty\template\ifx\empty\rowstblst
- \def\template{\colsepsurround\lft####\rgt&&\lft####\rgt\cr}
- \else\def\template{\colsepsurround####\hfil&&\lft####\rgt\cr}\fi
- \fi
- \tsht=.775\cvsize\tsdp=.225\cvsize
- \def\tstrut{\vrule height\tsht depth\tsdp width0pt}
- %Logical mark up of column and row separators, via use of
- \def\cs{&\colsepsurround\colsep\colsepsurround&}
- \def\prs{&\colsepsurround\lineglue&} \def\srp{&\lineglue\colsepsurround&}
- \def\rs{\colsepsurround\tstrut\cr
- \ifx\empty\rowsep\else\noalign{\rowsep}\fi
- \ifx\empty\rowstblst\else\ea\nxtrs\fi}
- \def\grs{\colsepsurround\tstrut\cr\ghostrow}
- \def\rss{&\colsepsurround\rowstbsep\colsepsurround&}
- \def\hs{\colsepsurround\tstrut\cr
- \ifx\empty\headersep\else\noalign{\headersep}\fi
- \ifx\empty\rowstblst\else\ea\nxtrs\fi}
- \preinsert
- \setbox\tbl=\vbox{\tabskip=0pt\relax\offinterlineskip
- \halign{\span\template\ifx\empty\first\ifx\empty\rowstblst\else
- \ifx\empty\header\else\ea\rss\fi\fi\else\first\ea\rss\fi
- \ifx\empty\header\ifx\empty\first\if\empty\rsl\else\ea\nxtrs\fi
- \else\ea\hs\fi
- \else\header\ea\hs\fi
- #1\colsepsurround\tstrut\crcr} } %end \setbox
- \postinsert
- \ifx\capbtbl\empty\else\hbox to\thsize{\strut\hfil\capbtbl\hss}\captionsep\fi
- \frameit{\copy\tbl}
- \ifx\footer\empty\else\footersep\hbox{\vtop{\noindent\hsize=\thsize%
- \footer}}\fi }} %end \btable
- %Defaults
- \cvsize=4ex\tsht=.775\cvsize\tsdp=.225\cvsize\def\colsepsurround{\kern.5em}
- \def\capbtbl{}\def\first{}\def\header{}\def\rowstblst{}\def\footer{}\def\data{}
- \def\captionsep{\medskip} \def\headersep{\hrule}
- \def\footersep{\smallskip} \def\rowstbsep{\vrule}
- \def\preinsert{}
- \def\postinsert{\global\thsize=\wd\tbl
- \global\tvsize=\ht\tbl\global\advance\tvsize by\dp\tbl}
- \ctr\nonruled\nonframed\def\template{}\def\ghostrow{} %end Defaults
- %Auxiliaries
- \def\boxit#1{\vbox{\hrule\hbox{\vrule\vbox{#1}\vrule}\hrule}}
- \def\dotboxit#1{\vbox{\offinterlineskip\hbox to\thsize{\dotfill}%
- \hbox{\lower\tsdp\vbox to\tvsize{%
- \leaders\hbox to0pt{\hss\vrule height2pt depth2pt width0pt.\hss}\vfil}%
- \vbox{#1}\lower\tsdp\vbox to\tvsize{%
- \leaders\hbox to0pt{\hss\vrule height2pt depth2pt width0pt.\hss}\vfil}}%
- \hbox to\thsize{\dotfill}}}
- %And to account for logical columns with \logmultispan
- %\def\spicspan{\span\omit}
- \def\logmultispan#1{\omit\mscount=#1\multiply\mscount by2 \advance\mscount by-1
- \loop\ifnum\mscount>1 \spicspan\advance\mscount by-1 \repeat}
- %To process FIFO, Mod 1993
- %\def\fifo#1{\ifx\ofif#1\ofif\else\process#1\fi\fifo}
- %\def\ofif#1\fifo{\fi}
- %\def\process#1{\hbox to0pt{\hss#1\hss}\kern.5ex}
- %To handle the row stub list: \rsl
- \def\nxtrs{\ifx\empty\rsl%\let\nxtel=\relax
- \else\def\nxtel{\ea\nrs\rsl\srn}\ea\nxtel\fi}%next Row Stub
- \def\nrs#1#2\srn{\gdef\rsl{#2}#1\rss}
- %History of changes
- %Dec 93: \multispan name changed into \logmultispan (logical multispan)
- % name \caption changed into \capbtbl (no conflicts within LaTeX)
- %%%%btable end%%%% %end btable.tex, cgl@risc1.rug.nl
- %
- \bgroup
- \def\capbtbl{AT\&T Common Stock}
- \def\header{Year\cs Price\cs Dividend}
- \def\footer{* (first quarter only}
- \def\data{1971\cs 41--54\cs\llap{\$}2.60\rs
- 2\cs 41--54\cs 2.70}%et cetera
- $$\flr\btable\data\qquad\framed\ruled\btable\data$$
- \egroup
- %
- \def\data{PD \cs licensed via UNIX\rs
- all platforms \cs under UNIX \rs
- \TeX book (also on-line) \cs On-line manual \rs
- METAfont's CM, virtual fonts \cs ? \rs
- open system \cs kernel undocumented}
- %
- \def\header{(All)\TeX\cs T/Di-roff}
- \def\rowstblst{{Costs}{Availability}{Documentation}{Fonts}{{Design}}}
- %Weird these extra {} ^ ^
- \def\capbtbl{Troff versus \TeX/METAfont}
- $$\fll\btable\data$$
- \bye
-
-
-